由于工作要求,需要爬取汽车之家的数据,于是动起了脑筋。平时比较习惯用c++,但c++的urllib用过几次后觉得很不方便,于是改用python写。我们这次的目标是爬取汽车之家的所有车身外观的数据,并按照品牌、车系、年款三个等级进行分类。
从哪里下手呢?分期汽车之家源码,发现http://car.autohome.com.cn/AsLeftMenu/As_LeftListNew.ashx?typeId=2%20&brandId=0%20&fctId=0%20&seriesId=0这个链接下是所有车辆品牌的列表,正和我意。爬取的逻辑很简单,首先读取品牌列表,打开每个品牌的url,通过正则式取得每个车系的链接。第二步,点开每个车系的链接,车系包含两个页面,一个是在售车型,一个是停产车型。再通过正则式找到所有的车型的链接。有一点要注意的是,正则式中年款是一行,一个年款下才是详细的款式,因此这一步要分两小步:取出整个年份多有的车款,再取出最终的车款并添加年份信息。默认页面是在售,因此还要找到停产车型的url并打开。这里用一个dic做容器标签为年款,内容为车款的url。打开停产车型并按照之前的步骤就可以搞定。第三步,逐个打开车款的url,寻找“车身外观”的链接,并打开,这个页面就是就可以找到我们需要的最终图片了。但是注意两点:1、这个页面有两种图片,一个是小图,一个是大图的url。所以还需要找到大图的url并且打开,然后在这个页面里寻找最终的图片链接,并下载。2.、这个页面可能会有“下一页”的情形出现,因此在打开大图链接之前最好把所有的下一页遍历一遍,存到一个list里一起处理。通过以上步骤,建立三级